package a2;

import java.util.List;
import org.jgrapht.graph.DefaultWeightedEdge;
import org.jgrapht.graph.SimpleDirectedWeightedGraph;

public interface Algorithm {
    /**
     * Gibt den kürzesten Weg von source nach target als Liste von Strings zurück
     * @param graph der Graph, auf welchem gesucht werden soll
     * @param source Startecke
     * @param target Zielecke
     * @return die Liste von Ecken, welche den Weg bilden
     */
    List<String> getShortestWay(SimpleDirectedWeightedGraph<String, DefaultWeightedEdge> graph, String source, String target); //Eine Liste von Ecken
    /**
     * Gibt die Anzahl der Zugriffe auf den Graphen für das Einmalige abarbeiten des Algorithmen zurück
     * @return Anzahl der Zugriffe auf den Graphen. Ein Zugriff ist entweder das holen der Gewichtung einer Kante oder das holen aller indizenten Kanten einer Ecke.
     */
    int getLastAccessCount();
}
